package com.haohan.jingyuan.util;

import cn.hutool.extra.qrcode.QrCodeUtil;
import lombok.extern.slf4j.Slf4j;

import java.io.ByteArrayInputStream;
import java.io.InputStream;

/**
 * 二维码生成工具类
 *
 * @ClassName QrCodeToolUtil
 * @Description 二维码生成工具
 * @Author hexijun
 * @Time 2025/11/04 21:00
 * @Version 1.0
 */
@Slf4j
public class QrCodeToolUtil {

    /**
     * 二维码默认宽度
     */
    private static final int DEFAULT_WIDTH = 300;

    /**
     * 二维码默认高度
     */
    private static final int DEFAULT_HEIGHT = 300;

    /**
     * 生成二维码图片输入流
     *
     * @param content 二维码内容
     * @return 二维码图片输入流
     */
    public static InputStream generateQrCode(String content) {
        return generateQrCode(content, DEFAULT_WIDTH, DEFAULT_HEIGHT);
    }

    /**
     * 生成二维码图片输入流
     *
     * @param content 二维码内容
     * @param width   宽度
     * @param height  高度
     * @return 二维码图片输入流
     */
    public static InputStream generateQrCode(String content, int width, int height) {
        try {
            // 使用Hutool生成二维码到字节数组
            byte[] qrCodeBytes = QrCodeUtil.generatePng(content, width, height);

            // 转换为输入流
            return new ByteArrayInputStream(qrCodeBytes);

        } catch (Exception e) {
            log.error("生成二维码失败", e);
            throw new RuntimeException("生成二维码失败", e);
        }
    }
}

